草庐IT

c++ - SIMD C++ 库

全部标签

c - 在C中制作一个多架构静态库

我在Ubuntu上工作,我已经按照thissite上的说明制作了一个静态C库.但是生成的.a包只能在编译它的机器上运行。我知道.a存档包含目标文件(在我的例子中只有一个),所以,我能否以某种方式将在不同机器(i386和amd64)中编译的目标文件打包在一起,以便GCC可以知道应该使用哪个文件?如果我不能,至少可以让我的库被其他同架构机器识别吗?(使用-L.-llibraryname)例子:存档名称“libvisualt64.a”命令:gcc-omainmain.c-L。-lvisualt64说:skippingincompatible./libvisualt.awhensearchin

c - 在C中制作一个多架构静态库

我在Ubuntu上工作,我已经按照thissite上的说明制作了一个静态C库.但是生成的.a包只能在编译它的机器上运行。我知道.a存档包含目标文件(在我的例子中只有一个),所以,我能否以某种方式将在不同机器(i386和amd64)中编译的目标文件打包在一起,以便GCC可以知道应该使用哪个文件?如果我不能,至少可以让我的库被其他同架构机器识别吗?(使用-L.-llibraryname)例子:存档名称“libvisualt64.a”命令:gcc-omainmain.c-L。-lvisualt64说:skippingincompatible./libvisualt.awhensearchin

c - 在参数 typedef 更改时重建动态库

假设,我有一个C结构,DynApiArg_t。typedefstructDynApiArg_s{uint32_tm1;...uint32_tmx;}DynApiArg_t;这个结构的指针作为参数传递给函数sayvoidDynLibApi(DynApiArg_t*arg){arg->m1=0;another_fn_in_the_lib(arg->mold);/*Maycrashhere.(1)*/}存在于动态库libdyn.so中。此API通过dlopen/dlsym调用过程从可执行文件调用。如果此动态库更新到版本2,其中DynApiArg_t现在有新成员,比如m2,如下所示:typed

c - 在参数 typedef 更改时重建动态库

假设,我有一个C结构,DynApiArg_t。typedefstructDynApiArg_s{uint32_tm1;...uint32_tmx;}DynApiArg_t;这个结构的指针作为参数传递给函数sayvoidDynLibApi(DynApiArg_t*arg){arg->m1=0;another_fn_in_the_lib(arg->mold);/*Maycrashhere.(1)*/}存在于动态库libdyn.so中。此API通过dlopen/dlsym调用过程从可执行文件调用。如果此动态库更新到版本2,其中DynApiArg_t现在有新成员,比如m2,如下所示:typed

c - Gdb 函数入口点未知

我正在使用供应商API,我拥有其源代码,我可以设置断点并且它们命中率很高,但是如果我尝试在gdb中调用一个函数(按其名称),它会显示“入口点地址未知”。,这是什么意思,有什么解决方法吗?我试过谷歌搜索,但没有找到任何有用的东西。非常感谢您的帮助。下一步我想使用objdump获取函数的地址,然后尝试直接调用地址,如果它有效。但是我不知Prop体怎么做,也请在这里指导我,供应商库是动态链接到我自己的程序的编辑1:在执行“信息地址“函数””之后,我尝试调用类似“调用(*“地址”)(参数)”,它仍然显示相同的错误,请注意它确实知道函数地址。 最佳答案

c - Gdb 函数入口点未知

我正在使用供应商API,我拥有其源代码,我可以设置断点并且它们命中率很高,但是如果我尝试在gdb中调用一个函数(按其名称),它会显示“入口点地址未知”。,这是什么意思,有什么解决方法吗?我试过谷歌搜索,但没有找到任何有用的东西。非常感谢您的帮助。下一步我想使用objdump获取函数的地址,然后尝试直接调用地址,如果它有效。但是我不知Prop体怎么做,也请在这里指导我,供应商库是动态链接到我自己的程序的编辑1:在执行“信息地址“函数””之后,我尝试调用类似“调用(*“地址”)(参数)”,它仍然显示相同的错误,请注意它确实知道函数地址。 最佳答案

c - 搜索 -lSDL 时跳过 incompatible/libSDL.a

我正在尝试在IBM机器上“制作”ioquake3。但是,我不断收到“搜索-lSDL时跳过不兼容的/libSDL.a”错误。我是Linux的终极初学者,但不是半途而废!我没有安装任何库的权限,我们的服务器管理员现在大约一周没有响应。所以,我现在一直在谷歌搜索/测试解决方案。如消息所述,系统上的库不兼容。所以,我去了Ubuntu站点,下载了SDLPPC库。我上传,解压到指定文件夹。但是,GCC不知道这些库在哪里。所以,我找到了一个叫做“LD_LIBRARY_PATH="~/minoru/cfe2/yasirTemp/ioquake3dev/zzz/pkgs/usr/lib"的东西告诉GCC

c - 搜索 -lSDL 时跳过 incompatible/libSDL.a

我正在尝试在IBM机器上“制作”ioquake3。但是,我不断收到“搜索-lSDL时跳过不兼容的/libSDL.a”错误。我是Linux的终极初学者,但不是半途而废!我没有安装任何库的权限,我们的服务器管理员现在大约一周没有响应。所以,我现在一直在谷歌搜索/测试解决方案。如消息所述,系统上的库不兼容。所以,我去了Ubuntu站点,下载了SDLPPC库。我上传,解压到指定文件夹。但是,GCC不知道这些库在哪里。所以,我找到了一个叫做“LD_LIBRARY_PATH="~/minoru/cfe2/yasirTemp/ioquake3dev/zzz/pkgs/usr/lib"的东西告诉GCC

c - Linux中共享内存中的多个链接列表

我正在使用C语言和Linux作为平台。我想在多个进程中共享多个结构,这些结构有链接列表的头部(这些列表也应该共享)和指向彼此的指针。此数据所需的内存可达1Mb。因为我不能在共享内存中使用指针,因为它们对不同的进程无效。有两种选择:1)要么使用偏移值而不是指针。2)否则,使用不同的共享内存并使用共享内存ID(由shmget返回)而不是指针。由于要共享的内存很大,哪个选项更好?你能建议另一种选择吗?谢谢。 最佳答案 使用偏移值。使用从共享内存区域开始的size_t偏移量(以字符为单位)代替指针。您将需要在访问或操作这些列表的任何地方执行

c - Linux中共享内存中的多个链接列表

我正在使用C语言和Linux作为平台。我想在多个进程中共享多个结构,这些结构有链接列表的头部(这些列表也应该共享)和指向彼此的指针。此数据所需的内存可达1Mb。因为我不能在共享内存中使用指针,因为它们对不同的进程无效。有两种选择:1)要么使用偏移值而不是指针。2)否则,使用不同的共享内存并使用共享内存ID(由shmget返回)而不是指针。由于要共享的内存很大,哪个选项更好?你能建议另一种选择吗?谢谢。 最佳答案 使用偏移值。使用从共享内存区域开始的size_t偏移量(以字符为单位)代替指针。您将需要在访问或操作这些列表的任何地方执行